# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/7/9 0009 7:36
@Author : 测试开发工程师
@File : 24. gor-repllay 流量回放.py
@Software: PyCharm
============================
"""


"""
GoReplay 是一个开源工具，用于捕获实时 HTTP 流量并将其重播到测试环境，以便使用真实数据持续测试您的系统。它可用于增加对代码的部署，配置更改
和基础架构更改的信息。
GoReplay 是一个开源的网络监控工具，可以记录您的实时流量，并将其用于跟踪，负载测试，监控和详细分析。

价值 ： 
    厌倦了生产调式？ 使用 GoReplay 准确模拟生产环境，使您的部署和基础架构更改可预测

捕获网络流量，复制到其他环境（回放过程中：过滤/重写等）

预编译版本 ： https://github.com/buger/goreplay/releases

监听模式 ： sudo ./gor --input-raw:8000 --output-stdout
转发模式 ： sudo ./gor --input-raw:8000 --output-
            http = "https://localhost:8001"
重放模式 ： gor --input-file reqoests.gor --output-
            http = "https://localhost:8001"
性能测试（加速） ： gor --input-file "request.gor|200%" --output-stdout
            "staging.com"
            
核心参数： 
    input 参数:  -input-raw   -input-file   -input-tcp   -input-raw-track-response  
    output 参数： -output-http   -output-file   -output-tcp  -output-stdout

请求过滤：
    gor --input-raw:8000  --output-http staging.com \
        --http-allow-url /api
    gor --input-raw:8000  --output-http staging.com \
        --http-disallow-url /api
    gor --input-raw:8000  --output-http staging.com
        --http-allow-header api-version:1\.0\d
    gor --input-raw:8000  --output-http "http://staging.server" \
        --http-allow-method GET \
        --http-allow-method OPTIONS
请求重写：
    gor --input-raw:8000  --output-http staging.com \
        --http-rewrite-url /v1/user/([^\\/]+)/ping:v2/user/$1/ping
    gor --input-raw:8000  --output-http staging.com \
        --http-set-param api_key=1
    gor --input-raw:8000  --output-http "http://staging.server"
        --http-header "User-Agent:Replayed by Gor"
        --http-header "Enable-Feature-X: true"     
"""

"""
经典案例：
    tcpdump 监听模式
        sudo ./gor --input-raw:8000 --output-stdount
        sudo ./gor --input-raw:8000 --output-file=requesta.gor 
    线上流量同步 : 将线上数据 同步 到预发布环境
        sudo ./gor --input-raw:80 --output-http="http://dev.ceshiren.com:8001"

"""